package cn.getech.data.development.bean.jdbc

import cn.getech.data.development.enums.FlinkStreamHiveWriteMode
import cn.getech.data.development.utils.{JDBCSQLTypeUtils}
import org.apache.flink.table.types.DataType

case class JDBCSqlParserResourceBean() {
  /* driver */
  var driver = ""
  /* url */
  var url = ""
  /* hive */
  var typename: String = null
  /* 目标库 */
  var db: String = null
  /* 目标表 */
  var tableName: String = null
  /* 书写模式: append, cover */
  var appendType: String = null
  var hiveWriteMode = FlinkStreamHiveWriteMode.APPEND
  /* 开启自动分区 */
  var isDynamicPartition: Boolean = false
  /* 是否是分区表 */
  var isPartitionTable: Boolean = false
  /* 采集配置 */
  var collectionConfig: JDBCCollectionConfigBean = null
  /* 表结构字段 */
  var fields: Array[JDBCFieldBean] = null
  /* 用户名 */
  var username: String = ""
  /* 密码 */
  var password: String = ""
  /* sink表 */
  var sinkTableName: String = ""
  /* 分隔符 */
  var delimitFormat: Int = 0
  /* 输出的文件格式： json，text，parquet */
  var outputFormat: String = null

  def getFieldNames: Array[String] = {
    fields.map(_.field_name)
  }

  def getFieldTypes: Array[DataType] = {
    fields.map(x => {
      val utils = new JDBCSQLTypeUtils()
      utils.type2DataType(x.class_type)
    })
  }

}
